load("@prysm//tools/go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_test")

go_library(
    name = "go_default_library",
    srcs = [
        "blocks_fetcher.go",
        "blocks_fetcher_peers.go",
        "blocks_fetcher_utils.go",
        "blocks_queue.go",
        "blocks_queue_utils.go",
        "fsm.go",
        "log.go",
        "round_robin.go",
        "service.go",
    ],
    importpath = "github.com/prysmaticlabs/prysm/beacon-chain/sync/initial-sync",
    visibility = ["//beacon-chain:__subpackages__"],
    deps = [
        "//beacon-chain/blockchain:go_default_library",
        "//beacon-chain/core/feed:go_default_library",
        "//beacon-chain/core/feed/block:go_default_library",
        "//beacon-chain/core/feed/state:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/core/state:go_default_library",
        "//beacon-chain/db:go_default_library",
        "//beacon-chain/flags:go_default_library",
        "//beacon-chain/p2p:go_default_library",
        "//beacon-chain/p2p/peers/scorers:go_default_library",
        "//beacon-chain/p2p/types:go_default_library",
        "//beacon-chain/sync:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared:go_default_library",
        "//shared/abool:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/featureconfig:go_default_library",
        "//shared/mathutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/rand:go_default_library",
        "//shared/timeutils:go_default_library",
        "@com_github_kevinms_leakybucket_go//:go_default_library",
        "@com_github_libp2p_go_libp2p_core//peer:go_default_library",
        "@com_github_paulbellamy_ratecounter//:go_default_library",
        "@com_github_pkg_errors//:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@io_opencensus_go//trace:go_default_library",
    ],
)

go_test(
    name = "go_raceon_test",
    srcs = [
        "blocks_fetcher_test.go",
        "blocks_queue_test.go",
        "fsm_test.go",
        "initial_sync_test.go",
        "round_robin_test.go",
    ],
    embed = [":go_default_library"],
    race = "on",
    tags = ["race_on"],
    deps = [
        "//beacon-chain/blockchain/testing:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/db:go_default_library",
        "//beacon-chain/db/testing:go_default_library",
        "//beacon-chain/flags:go_default_library",
        "//beacon-chain/p2p:go_default_library",
        "//beacon-chain/p2p/peers:go_default_library",
        "//beacon-chain/p2p/testing:go_default_library",
        "//beacon-chain/p2p/types:go_default_library",
        "//beacon-chain/state:go_default_library",
        "//beacon-chain/state/stateutil:go_default_library",
        "//beacon-chain/sync:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/featureconfig:go_default_library",
        "//shared/hashutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/sliceutil:go_default_library",
        "//shared/testutil:go_default_library",
        "//shared/testutil/assert:go_default_library",
        "//shared/testutil/require:go_default_library",
        "//shared/timeutils:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/enr:go_default_library",
        "@com_github_kevinms_leakybucket_go//:go_default_library",
        "@com_github_libp2p_go_libp2p_core//:go_default_library",
        "@com_github_libp2p_go_libp2p_core//network:go_default_library",
        "@com_github_libp2p_go_libp2p_core//peer:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@com_github_sirupsen_logrus//hooks/test:go_default_library",
    ],
)

go_test(
    name = "go_default_test",
    srcs = [
        "blocks_fetcher_peers_test.go",
        "blocks_fetcher_test.go",
        "blocks_fetcher_utils_test.go",
        "blocks_queue_test.go",
        "fsm_test.go",
        "initial_sync_test.go",
        "round_robin_test.go",
        "service_test.go",
    ],
    embed = [":go_default_library"],
    deps = [
        "//beacon-chain/blockchain/testing:go_default_library",
        "//beacon-chain/core/feed:go_default_library",
        "//beacon-chain/core/feed/state:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/db:go_default_library",
        "//beacon-chain/db/testing:go_default_library",
        "//beacon-chain/flags:go_default_library",
        "//beacon-chain/p2p:go_default_library",
        "//beacon-chain/p2p/peers:go_default_library",
        "//beacon-chain/p2p/peers/scorers:go_default_library",
        "//beacon-chain/p2p/testing:go_default_library",
        "//beacon-chain/p2p/types:go_default_library",
        "//beacon-chain/sync:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared/abool:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/event:go_default_library",
        "//shared/featureconfig:go_default_library",
        "//shared/hashutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/sliceutil:go_default_library",
        "//shared/testutil:go_default_library",
        "//shared/testutil/assert:go_default_library",
        "//shared/testutil/require:go_default_library",
        "//shared/timeutils:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/enr:go_default_library",
        "@com_github_kevinms_leakybucket_go//:go_default_library",
        "@com_github_libp2p_go_libp2p_core//:go_default_library",
        "@com_github_libp2p_go_libp2p_core//network:go_default_library",
        "@com_github_libp2p_go_libp2p_core//peer:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@com_github_sirupsen_logrus//hooks/test:go_default_library",
    ],
)

# gazelle:exclude fsm_benchmark_test.go
go_test(
    name = "go_benchmark_test",
    size = "small",
    srcs = ["fsm_benchmark_test.go"],
    args = [
        "-test.bench=.",
        "-test.benchmem",
        "-test.v",
    ],
    embed = [":go_default_library"],
    local = True,
    tags = [
        "benchmark",
        "manual",
        "no-cache",
    ],
    deps = [
    ],
)
